/*
 * UserMinhasPesquisas.java
 *
 *  Created on: 10/11/2011
 *      Author: Bugarin Woiski
 */

/********************************************************************
* Definicao do package a que esta classe pertence                   *
*********************************************************************/
package transactions;

/********************************************************************
* Listagem de packages incluidos                                    *
*********************************************************************/
import data.*;
import utils.*;
import java.util.*;

/********************************************************************
* DESCRICAO DA CLASSE:
* 
* Esta classe implementa a exibição de todas as pequisas disponiveis
* ao user. Basicamente, faz uma consulta à tabela '_pesquisa_disp'
* e exibe suas informacoes na tela do 'home_user'.
* 
* Essa classe eh a implementacao do caso de uso:
*      + 09_USER_-_Consultar_Pesquisas_Existentes
* 
* (ver documentacao do projeto para mais detalhes)
*********************************************************************/
public class UserMinhasPesquisas
{
    /* ------------------- */
    /* Atributos do objeto */
    /* ------------------- */
    //null

    /* ---------------------- */
    /* Construtores do objeto */
    /* ---------------------- */
//    public UserMinhasPesquisas()
//    {
//        //null
//    }
    
    /* ----------------- */
    /* Métodos do objeto */
    /* ----------------- */
    //null
    
    /* ----------------- */
    /* Métodos da classe */
    /* ----------------- */
    public static LinkedList<PesquisaDO> listar(int user_id)
    {
        /* Cria lista ligada de objetos 'pesquisas disponiveis'
         * e lista ligada de objetos 'pesquisas'.
         */
        LinkedList<PesquisaDispDO> pesq_disp = new LinkedList<PesquisaDispDO>();
        LinkedList<PesquisaDO> pesq_lista = new LinkedList<PesquisaDO>();
        
        /* Abre uma transacao para conexao com o banco de dados */
        Transaction tr = null;
        try
        {
            tr = new Transaction(); //Instancia e chama o construtor
        }
        catch (Exception e)
        {
            System.out.println("Não consegui transação com o banco.");
            e.printStackTrace();
        }
        
        /* Se conseguiu abrir a transacao, realiza a busca */
        if (tr != null)
        {
            try
            {
                /* Lista todas as pesquisas disponiveis para o user */
                pesq_disp = PesquisaDispData.buscar(user_id, tr);
            }
            catch (Exception e)
            {
                System.out.println("Não consegui buscar pesquisas disponíveis.");
                e.printStackTrace();
            }
        }
        
        /* Para cada pesquisa, pega seus dados no banco */
        if (pesq_disp.size() != 0)
        {
            for (PesquisaDispDO pd : pesq_disp)
            {
                try
                {
                    PesquisaDO p = new PesquisaDO();
                    p = PesquisaData.consultar(pd.getPesquisa_id(), tr); //Pega pesquisa
                    pesq_lista.add(p); //Salva na lista ligada
                } 
                catch (Exception e)
                {
                    e.printStackTrace();
                    System.out.println("Não consegui dados da pesquisa.");
                }
            }
        }
        
        return (pesq_lista);
    }//fim da funcao 'listar'
    
} //fim da classe